package com.xujie.sportsmeeting.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xujie.sportsmeeting.dto.RoleQueryDTO;
import com.xujie.sportsmeeting.entity.SysRole;
import com.xujie.sportsmeeting.vo.PermissionVO;

import java.util.List;

/**
 * 系统角色服务接口
 */
public interface SysRoleService extends IService<SysRole> {

    /**
     * 分页查询角色
     */
    IPage<SysRole> getRolePage(IPage<SysRole> page, RoleQueryDTO queryDTO);

    /**
     * 创建角色
     */
    boolean createRole(SysRole role);

    /**
     * 更新角色
     */
    boolean updateRole(SysRole role);

    /**
     * 更新角色状态
     */
    boolean updateRoleStatus(Long roleId, Integer status);

    /**
     * 根据角色ID查询权限列表
     */
    List<String> findPermissionsByRoleId(Long roleId);

    /**
     * 根据角色ID查询权限ID列表
     */
    List<Long> findPermissionIdsByRoleId(Long roleId);

    /**
     * 获取所有权限（树形结构）
     */
    List<PermissionVO> getAllPermissions();

    /**
     * 为角色分配权限
     */
    boolean assignRolePermissions(Long roleId, List<Long> permissionIds);

    /**
     * 根据角色编码查询角色
     */
    SysRole findByRoleCode(String roleCode);
}
